home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / polyfit7.src < prev    next >
Text File  |  1992-08-18  |  2KB  |  79 lines

  1. %%HP:T(3)A(D)F(.);
  2. @ POLYFIT by Stefano Oss
  3. DIR
  4.   MINA
  5.     \<< 1 GETI
  6.       DO ROT ROT GETI 4 ROLL DUP2
  7.         IF >
  8.         THEN SWAP
  9.         END DROP
  10.       UNTIL -64 FS?
  11.       END SWAP DROP
  12.     \>>
  13.   MAXA
  14.     \<< 1 GETI
  15.       DO ROT ROT GETI 4 ROLL DUP2
  16.         IF <
  17.         THEN SWAP
  18.         END DROP
  19.       UNTIL -64 FS?
  20.       END SWAP DROP
  21.     \>>
  22.   ROCO
  23.     \<< \-> A
  24.       \<< A SIZE OBJ\-> DROP \-> n m
  25.         \<< 1 m
  26.           FOR j 1 n
  27.             FOR i A { i j } GET
  28.             NEXT n \->ARRY
  29.           NEXT n EVAL
  30.         \>>
  31.       \>>
  32.     \>>
  33.   PLTF
  34.     \<< ROCO \-> VX VY n
  35.       \<< CLLCD "Plotting Points" 1 DISP
  36. VX MINA SWAP DROP
  37. VX MAXA SWAP DROP
  38. VY MINA SWAP DROP
  39. VY MAXA SWAP DROP \-> xmin xmax ymin ymax
  40.         \<< ERASE
  41. 'xmin-10*(xmax-xmin)/131' EVAL
  42. 'xmax+10*(xmax-xmin)/131' EVAL
  43. 'ymin-10*(ymax-ymin)/65' EVAL
  44. 'ymax+10*(ymax-ymin)/65' EVAL \-> xi xa yi ya
  45.           \<< xi xa XRNG yi ya YRNG xi yi R\->C xa ya R\->C BOX
  46.           \>> xmax xmin - 65 / 100 * IP 100 /
  47.               ymax ymin - 32 / 100 * IP 100 / \-> rx ry
  48.           \<< 1 n
  49.             FOR i
  50.               VX i GET
  51.               VY i GET \-> px py
  52.               \<< px rx - py R\->C px rx + py R\->C LINE
  53.                   px py ry - R\->C px py ry + R\->C LINE
  54.               \>>
  55.             NEXT
  56.           \>>
  57.         \>>
  58.       \>>
  59.     \>>
  60.   POLF
  61.     \<< { X EQ pol } PURGE 1 + \-> A N
  62.       \<< A PLTP "Fitting..." 1 DISP A ROCO \-> VX VY n
  63.         \<< 1 N
  64.           FOR i 1 N
  65.             FOR j '\GS(k=1,n,VX(k)^(i+j-2))' EVAL
  66.             NEXT
  67.           NEXT { N N } \->ARRY 1 N
  68.           FOR i '\GS(k=1,n,VY(k)*VX(k)^(i-1))' EVAL
  69.           NEXT N \->ARRY SWAP / \-> C
  70. 'pol(X)=\GS(k=1,N,C(k)*X^(k-1))' DEFINE
  71. 'pol(X)' EVAL STEQ DRAW
  72. '\v/\GS(k=1,n,(pol(VX(k))-VY(k))^2/(n-N))' EVAL
  73.         \>>
  74.       \>> PICT RCL SWAP \->STR "Chisq. = " SWAP + 1 \->GROB
  75. { # 5h # 5h } SWAP GOR
  76. 2 FIX 'EQ' EVAL \->Q 'Fit' \->TAG SWAP DUP PICT STO \->LCD { } PVIEW
  77.     \>>
  78. END
  79.